package co.edu.udea.iw.rtf.dto;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;

/**
 * 
 * @author juank
 *Clase DTO para el transporte de la iformacion de las solicitudes con las demas capas del sistema
 *
 */
public class Solicitud implements Serializable  {

	/**
	 * Codigo de la solicitud la cual es clave primaria
	 */
	private Integer codigo;
	/**
	 * Nombre de la persona que realiza la solicitud
	 */
	private String nombreSolicitante;
	/**
	 * Apellido de la persona que realiza la solicitud
	 */
	private String apellidoSolicitante;
	/**
	 * Correo Electronico de la persona que realiza la solicitud
	 */
	private String correoElectronico;
	/**
	 * Telefono fijo de la persona que realiza la solicitud
	 */
	private String telefono;
	/**
	 * Telefono Celular dela eprsona que realiza la solicitud
	 */
	private String celular;
	/**
	 * Sucursal a la cual queda asignada la solicitud
	 */
	private Sucursal sucursal;
	/**
	 * Producto por e cual se realiza la solicitud
	 */
	private Producto producto;
	/**
	 * Nombre del otro producto en caso de que lo haya
	 */
	private String cualOtroProducto;
	/**
	 * Tipo de solicitud que se esta realizando
	 */
	private TipoSolicitud tipoSolicitud;
	/**
	 * Texto que describe la solicitud realizada
	 */
	private String textoSolicitud;
	/**
	 * Fecha en que el usuario solicitante realiza la solicitud
	 */
	private Date fechaSolicitud;
	/**
	 * Variable boolena para saber si la solicitud esta asignada a alguien
	 */
	private Boolean asignada;
	/**
	 * Usuario al cual esta asignada la solicitud para ser respondida
	 */
	private Usuario usuarioAsignada;
	/**
	 * Fecha en que se asigna la solicitud al usuario encargado de responder
	 */
	private Date fechaAsignacion;
	/**
	 * Variable booleana para saber si la solicitud ya fue respondida a la persona solicitante
	 */
	private Boolean respondida;
	/**
	 * Usuario el cual responde la solicitud
	 */
	private Usuario usuarioResponde;
	/**
	 * Fecha en que se responde la solicitud
	 */
	private Date fechaRespuesta;
	/**
	 * Texto ingresado para responder la solicitud
	 */
	private String textoRespuesta;
	/**
	 * Lista de las respuestas realizadas por un usuario 
	 */
	Set<Respuesta> respuestas;
	
	
	/**
	 * Metodo que obtiene el codigo de la solicitud
	 * @return codigo
	 */
	public Integer getCodigo() {
		return codigo;
	}
	/**
	 * Metodo que asigna el nombre del codigo a una solicitud
	 * @param codigo
	 */
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	/**
	 * Metodo que obtiene el nombre de la persona que realiza la solicitud
	 * @return nombreSolicitante
	 */
	public String getNombreSolicitante() {
		return nombreSolicitante;
	}
	/**
	 * Metodo que asigna el nombre de la persona que realiza la solicitud
	 * @param nombreSolicitante
	 */
	public void setNombreSolicitante(String nombreSolicitante) {
		this.nombreSolicitante = nombreSolicitante;
	}
	/**
	 * Metodo que obtiene el apellido de la persona que realiza la solicitud
	 * @return apellidoSolicitante
	 */
	public String getApellidoSolicitante() {
		return apellidoSolicitante;
	}
	/**
	 * Metodo que obtiene el apellido de la persona que realiza la solicitud
	 * @param apellidoSolicitante
	 */
	public void setApellidoSolicitante(String apellidoSolicitante) {
		this.apellidoSolicitante = apellidoSolicitante;
	}
	/**
	 * Metodo que obtiene el Correo electronico de la persona que realiza la solicitud
	 * @return correoElectronico
	 */
	public String getCorreoElectronico() {
		return correoElectronico;
	}
	/**
	 * Metodo que asigna el correo electronico del solicitante
	 * @param correoElectronico
	 */
	public void setCorreoElectronico(String correoElectronico) {
		this.correoElectronico = correoElectronico;
	}
	/**
	 * Metodo que obtiene el telefono fijo del solicitante
	 * @return telefono
	 */
	public String getTelefono() {
		return telefono;
	}
	/**
	 * Metodo que asigna el telefono fijo del solicitante
	 * @param telefono
	 */
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
	/**
	 * Metodo que obtiene el telefono celular del solicitante
	 * @return celular
	 */
	public String getCelular() {
		return celular;
	}
	/**
	 * Metodo que asigna el telefono celular del solicitante
	 * @param celular
	 */
	public void setCelular(String celular) {
		this.celular = celular;
	}
	/**
	 * Metodo que obtiene la sucursal a la cual esta asignada la solicitud
	 * @return sucursal
	 */
	public Sucursal getSucursal() {
		return sucursal;
	}
	/**
	 * Metodo que asigna la sucursal a la cual se asigna la solicitud
	 * @param sucursal
	 */
	public void setSucursal(Sucursal sucursal) {
		this.sucursal = sucursal;
	}
	/**
	 * Metodo que obtiene el producto por el cual se realiza la solicitud
	 * @return producto
	 */
	public Producto getProducto() {
		return producto;
	}
	/**
	 * Metodo que asigna el producto por el que se realiza las solicitud
	 * @param producto
	 */
	public void setProducto(Producto producto) {
		this.producto = producto;
	}
	/**
	 * Metodo que obtiene el nombre de otro producto en caso de ingresarlo
	 * @return cualOtroProducto
	 */
	public String getCualOtroProducto() {
		return cualOtroProducto;
	}
	/**
	 * Metodo que asigna el otro producto por el que se realiza la solicitud
	 * @param cualOtroProducto
	 */
	public void setCualOtroProducto(String cualOtroProducto) {
		this.cualOtroProducto = cualOtroProducto;
	}
	/**
	 * Metodo que obtiene el tipo de solicitud realizada
	 * @return tipoSolicitud
	 */
	public TipoSolicitud getTipoSolicitud() {
		return tipoSolicitud;
	}
	/**
	 * Metodo que asigna el tipo de solicitud que se realiza
	 * @param tipoSolicitud
	 */
	public void setTipoSolicitud(TipoSolicitud tipoSolicitud) {
		this.tipoSolicitud = tipoSolicitud;
	}
	/**
	 * Metodo que obtiene el texto de la solicitud realizada
	 * @return textoSolicitud
	 */
	public String getTextoSolicitud() {
		return textoSolicitud;
	}
	/**
	 * Metodo que asigna el texto de la solicitud
	 * @param textoSolicitud
	 */
	public void setTextoSolicitud(String textoSolicitud) {
		this.textoSolicitud = textoSolicitud;
	}
	/**
	 * Metodo que obtiene la fecha en que se realizo la solicitud
	 * @return fechaSolicitud
	 */
	public Date getFechaSolicitud() {
		return fechaSolicitud;
	}
	/**
	 * Metodo que asigna la fecha en que se realiza la solicitud 
	 * @param fechaSolicitud
	 */
	public void setFechaSolicitud(Date fechaSolicitud) {
		this.fechaSolicitud = fechaSolicitud;
	}
	/**
	 * Metodo que obtiene una variable booleana para saber si la solicitud ya fue asignada a alguien
	 * @return asignada
	 */
	public Boolean getAsignada() {
		return asignada;
	}
	/**
	 * Metodo que asigna una variable booleana para saber si la solicitud esta asignada
	 * @param asignada
	 */
	public void setAsignada(Boolean asignada) {
		this.asignada = asignada;
	}
	/**
	 * Metodo que obtiene el usuario al cual esta asignada la solicitud
	 * @return usuarioAsignada
	 */
	public Usuario getUsuarioAsignada() {
		return usuarioAsignada;
	}
	/**
	 * Metodo que asigna el usuario a una solicitud
	 * @param usuarioAsignada
	 */
	public void setUsuarioAsignada(Usuario usuarioAsignada) {
		this.usuarioAsignada = usuarioAsignada;
	}
	/**
	 * Metodo que obtiene la fecha en que se asigno la solicitud a un usuario
	 * @return fechaAsignacion
	 */
	public Date getFechaAsignacion() {
		return fechaAsignacion;
	}
	/**
	 * Metodo que asigna la fecha en que se Asigno la solicitud a un usuario
	 * @param fechaAsignacion
	 */
	public void setFechaAsignacion(Date fechaAsignacion) {
		this.fechaAsignacion = fechaAsignacion;
	}
	/**
	 * Metodo que obtiene una variable booleana para saber si la solicitud ya fue respondida
	 * @return respondida
	 */
	public Boolean getRespondida() {
		return respondida;
	}
	/**
	 * Metodo que modifica la variable booleana para saber si la solicitud fue respondida
	 * @param respondida
	 */
	public void setRespondida(Boolean respondida) {
		this.respondida = respondida;
	}
	/**
	 * Metodo que obtiene el usuario el cual responde la solicitud
	 * @return usuarioResponde
	 */
	public Usuario getUsuarioResponde() {
		return usuarioResponde;
	}
	/**
	 * Metodo asigna el usuario que responde la solicitud
	 * @param usuarioResponde
	 */
	public void setUsuarioResponde(Usuario usuarioResponde) {
		this.usuarioResponde = usuarioResponde;
	}
	/**
	 * Metodo que obtiene la fecha en que fue respondida una solicitud
	 * @return fechaRespuesta
	 */
	public Date getFechaRespuesta() {
		return fechaRespuesta;
	}
	/**
	 * Metodo que asigna la fecha en que fue respondida la solicitud
	 * @param fechaRespuesta
	 */
	public void setFechaRespuesta(Date fechaRespuesta) {
		this.fechaRespuesta = fechaRespuesta;
	}
	/**
	 * Metodo que obtiene el texto de respuesta de una solicitud
	 * @return textoRespuesta
	 */
	public String getTextoRespuesta() {
		return textoRespuesta;
	}
	/**
	 * Metodo que asigna el texto de respuesta de una solicitud
	 * @param textoRespuesta
	 */
	public void setTextoRespuesta(String textoRespuesta) {
		this.textoRespuesta = textoRespuesta;
	}
	/**
	 * Metodo que se ejecuta si se quiere obtener la respuesta de la encuesta a una solicitud
	 * @return nombre de la respuesta
	 */
	public Set<Respuesta> getRespuestas() {
		return respuestas;
	}
	/**
	 * Metodo que se ejecuta para asignar una respuesta de encuesta a una solicitud
	 * @param respuestas
	 */
	public void setRespuestas(Set<Respuesta> respuestas) {
		this.respuestas = respuestas;
	}
	
}
